Advertisement forwarding storage and retrieval network

ABSTRACT

Methods and apparatus, including computer program products, for to advertisement forwarding storage and retrieval network. A method includes, in a network of interconnected computer system nodes, directing advertisement to a computer memory, directing data to a computer memory, continuously forwarding each of the unique data, independent of each other, from one computer memory to another computer memory in the network of interconnected computer system nodes without storing on any physical storage device in the network, continuously forwarding each of the unique advertisements, independent of each other, from one computer memory to another computer memory in the network of interconnected computer system nodes without storing on any physical storage device in the network, and retrieving one of the advertisements in response to an activity.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a U.S. National Phase of International ApplicationNo. PCT/US2009/049763, filed Jul. 7, 2009 which is a continuation ofU.S. patent application Ser. No. 12/170,925, filed Jul. 10, 2008, nowU.S. Pat. No. 7,636,758, entitled “ADVERTISEMENT FORWARDING STORAGE ANDRETRIEVAL NETWORK,” each of which is hereby expressly incorporated byreference in its entirety.

BACKGROUND

At least some embodiments disclosed herein relate to data storage, andmore particularly, to advertisement forwarding storage and retrievalnetwork.

The volume of data that must be stored by individuals, organizations,businesses and government is growing every year. In addition to justkeeping up with demand, organizations face other storage challenges.With the move to on-line, real-time business and government, criticaldata must be protected from loss or inaccessibility due to software orhardware failure. Today, many storage products do not provide completefailure protection and expose users to the risk of data loss orunavailability. For example, many storage solutions on the market todayoffer protection against some failure modes, such as processor failure,but not against others, such as disk drive failure. Many organizationsare exposed to the risk of data loss or data unavailability due tocomponent failure in their data storage system.

The data storage market is typically divided into two major segments,i.e., Direct Attached Storage (DAS) and Network Storage. DAS includesdisks connected directly to a server.

Network Storage includes disks that are attached to a network ratherthan a specific server and can then be accessed and shared by otherdevices and applications on that network. Network Storage is typicallydivided into two segments, i.e., Storage Area Networks (SANs) andNetwork Attached Storage (NAS).

A SAN is a high-speed special-purpose network (or subnetwork) thatinterconnects different kinds of data storage devices with associateddata servers on behalf of a larger network of users. Typically, a SAN ispart of the overall network of computing resources for an enterprise. Astorage area network is usually clustered in close proximity to othercomputing resources but may also extend to remote locations for backupand archival storage, using wide area (WAN) network carriertechnologies.

NAS is hard disk storage that is set up with its own network addressrather than being attached to the local computer that is servingapplications to a network's workstation users. By removing storageaccess and its management from the local server, both applicationprogramming and files can be served faster because they are notcompeting for the same processor resources. The NAS is attached to alocal area network (typically, an Ethernet network) and assigned an IPaddress. File requests are mapped by the main server to the NAS fileserver.

All of the above share one common feature that can be an Achilles tendonin more ways than one, i.e., data is stored on a physical medium, suchas a disk drive, CD drive, and so forth.

SUMMARY OF THE DESCRIPTION

The present invention provides methods and apparatus, including computerprogram products, for advertisement forwarding storage and retrievalnetwork.

In general, in one aspect, the invention features a method including, ina network of interconnected computer system nodes, directingadvertisement to a computer memory, directing data to a computer memory,continuously forwarding each of the unique data, independent of eachother, from one computer memory to another computer memory in thenetwork of interconnected computer system nodes without storing on anyphysical storage device in the network, continuously forwarding each ofthe unique advertisements, independent of each other, from one computermemory to another computer memory in the network of interconnectedcomputer system nodes without storing on any physical storage device inthe network, and retrieving one of the advertisements in response to anactivity.

In another aspect, the invention features a network including a group ofinterconnected computer system nodes each adapted to receive data andadvertisements, continuously forward the data and advertisements fromcomputer memory to computer memory, independent of each other, withoutstoring on any physical storage device in response to a request to storethe data or advertisements from a requesting system and retrieve aparticular data being continuously forwarded from computer memory tocomputer memory, along with an advertisement being continuouslyforwarded from computer memory to computer memory, in response to anactivity of the requesting system.

The details of one or more implementations of the invention are setforth in the accompanying drawings and the description below. Furtherfeatures, aspects, and advantages of the invention will become apparentfrom the description, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments are illustrated by way of example and not limitation inthe FIGS. of the accompanying drawings in which like references indicatesimilar elements.

FIG. 1 is a block diagram of an exemplary network.

FIG. 2 is a block diagram of an exemplary user system.

FIG. 3 is a block diagram of an exemplary network system.

FIG. 4 is a flow diagram of a process.

FIG. 5 is a flow diagram of a process.

FIG. 6 is a flow diagram of a process.

DETAILED DESCRIPTION

Unlike peer to peer networks, which use data forwarding in a transientfashion so that data is eventually stored on a physical medium such as adisk drive, the present invention is a continuous data forwardingsystem, i.e., data is stored by continually forwarding it from one nodememory to another node memory.

As shown in FIG. 1, an exemplary network 10 includes a user system 12and a number of network systems 14, 16, 18, 20, 22. Each of the networksystems 14, 16, 18, 20, 22 can be considered to be a node in the network10 and one such network system may be designated as a central server,such as network system 14, which may assume a control position innetwork 10. Each of the nodes 14, 16, 18, 20, 22 may be established as aprivately controlled network of peers under direct control of thecentral server 14. Peered nodes may also be a mix of private and publicnodes, and thus not under the direct physical control of the centralserver 14. The network 10 may also be wholly public where the centralserver 14 (or servers) has no direct ownership or direct physicalcontrol of any of the peered nodes.

As shown in FIG. 2, the user system 12 can include a processor 30,memory 32 and input/output (I/O) device 34. Memory 32 can include anoperating system (OS) 36, such as Linux, Apple® OS or Windows®, one ormore application processes 38, and a storage process 100, explained indetail below. Application processes 38 can include user productivitysoftware, such as OpenOffice or Microsoft® Office. The I/O device 34 caninclude a graphical user interface (GUI) 40 for display to a user 42.

As shown in FIG. 3, each of the network systems, such as network system14, can include a processor 50 and memory 52. Memory 52 can include anOS 54, such as Linux, Apple® OS or Windows®, and a data forwardingprocess 200, explained in detail below.

In traditional systems, application processes 38 need to store andretrieve data. In these traditional systems, data is stored on local orremote physical devices. And in some systems, this data can be segmentedinto different pieces or packets and stored locally or remotely onphysical mediums of storage. Use of fixed physical data storage devicesadd cost, maintenance, management and generate a fixed physical recordof the data, whether or not that is the desire of the user 42.

The present invention does not use fixed physical data storage to storedata. When a request to store data is received by the central server 14from storage process 100, data is directed to a node in the network 10where it is then continuously forwarded from node memory to node memoryin the network 10 by the data forwarding process 200 in each of thenetwork nodes without storing on any physical storage medium such as adisk drive. The forwarded data resides only for a very brief period oftime in the memory of any one node in the network 10. Data is not storedon any physical storage medium in any network node.

In a like manner, when a request to retrieve data is received by thecentral server 14 from storage process 100, the requested data, which isbeing forwarded from node memory to node memory in the network 10, isretrieved.

Data forwarded in this manner can be segmented and segments forwarded asdescribed above. Sill, the segmented data is not stored on any physicalstorage medium in any network node, but merely forwarded from the memoryof one node to the memory of another node.

As shown in FIG. 4, storage process 100 includes sending (102) a requestto a central server 14 to store or retrieve data. If the request is aretrieve data request, storage process 100 receives the requested datafrom the central server 14 or node in the network.

If the request to the central server 14 is a store data request, storageprocess 100 receives (104) an address of a node from the central server14 and forwards (106) the data to the node memory represented by thereceived address. Determining an address of a node available to receivethe data can be based on one or more factors, such as network trafficanalysis, available memory, combinations of factors, and so forth. Atime stamp can be applied to the data in the computer memory of thespecific node.

As shown in FIG. 5, data forwarding process 200 includes receiving (202)a request to store or retrieve data. If the received request is arequest to store data, data forwarding process 200 determines (204) anaddress of a node available to receive the data in memory. Thisdetermination (204) can include pinging the network and determiningwhich of the nodes in a network is available, or determining which nodein the network has the least traffic, or determining which node in thenetwork has the largest available memory, or any combination of these orother factors.

Process 200 sends (206) a message to the user system with the address ofa specific node for the requester to forward the data.

Process 200 detects (208) the presence of data in node memory. Process200 forwards (210) the data in memory to another node in the network ofnodes and continues to repeat detecting (208) and forwarding (210) ofthe data from node memory to node memory. When data arrives in any nodememory, process 200 affixes (212) a time stamp to the data.

Forwarding (210) can include pinging the node in the network todetermine which of the nodes in the network is available, or determiningwhich node in the network has the least traffic, or determining whichnode in the network has the largest available memory, or any combinationof these or other factors.

In one specific example, at the point of entry to a node, data undergoesan encrypted “handshake” with the node or central server 14 or user.This can be a public or private encryption system, such as the Cashmeresystem, which can use public-private keys. Cashmere decouples theencrypted forwarding path and message payload, which improves theperformance as the source only needs to perform a single public keyencryption on each message that uses the destination's unique publickey. This has the benefit that only the true destination node will beable to decrypt the message payload and not every node in thecorresponding relay group. Cashmere provides the capability that thedestination can send anonymous reply messages without knowing thesource's identity. This is done in a similar way, where the sourcecreates a reply path and encrypts it in a similar manner as theforwarding path.

In another example, other routing schemes are utilized.

If the received request is a request to retrieve data being continuouslyforwarded from node memory to node memory, data forwarding process 200matches (214) at the central server 14 using a hash mark or other uniquecode that can be “sniffed” by the node upon the data entering the nodevia the encryption handshake. This can occur by pinging the nodes in thenetwork. Process 200 sends (216) the message to return the data to theuser directly to the node or node state where the central server 14believes the data will likely appear. The more the central server 14 cannarrow the node state that it pings to, then the more efficient theretrieval will become and the less burdened by unnecessary messagingtraffic to nodes that are not necessary for a transaction between thecentral server 14 and the node capable of forwarding the data.

Once the correct node receives the message to forward the data in nodememory to the requester, process 200 forwards (218) in node memory thedata to the requester and forwards (220) a confirmation message that thedata has been sent to the user. This routing message may be sentdirectly to the central server 14 or may be passed to the central server14 or servers via other node(s) or supernode(s) in the network 10. Uponthe user receiving the requested data the user's application functionsto automatically ping the central server 14 that the data requested hasbeen received. Thus the network 10 creates data storage without caching,downloading and/or storing the data on any physical storage medium. Datastorage and management is accomplished via a continuous routing of thedata from node memory to node memory, the forwarded data only downloadedwhen the user requests the data to be returned to the user from thenetwork 10.

New nodes and node states may be added and/or deleted from the network10 based upon performance. Users may have access to all nodes or may besegmented to certain nodes or “node states” by the central server(s) orvia the specific architecture of the private, public or private-publicnetwork.

Individual nodes, nodes states and supernodes may also be extranetpeers, wireless network peers, satellite peered nodes, Wi-Fi peerednodes, broadband networks, and so forth, in public or private networks.Peered nodes or users may be used as routing participants in the network10 from any valid peer point with the same security systems employed, aswell as custom solutions suitable for the rigors of specificdeployments, such as wireless encryption schemes for wireless peers, andso forth.

In process 200, rather than have data cached or held in remote servers,hard drives or other fixed storage medium, the data are passed, routed,forwarded from node memory to node memory. The data are never downloadeduntil the authorized user calls for the data. A user on the system mayauthorize more than one user to have access to the data.

A primary goal in process 200 is to generate a data forwarding storageand management system where the data is never fixed in physical storage,but in fact, is continually being routed/forwarded from node memory tonode memory in the network. The path of the nodes to which data isforwarded may also be altered by the central server 14 to adjust forsystem capacities and to eliminate redundant paths of data that mayweaken the security of the network due to the increased probability ofdata path without this feature.

This data forwarding storage and management system in which the data isnever fixed in physical storage, but in fact, is continually beingrouted/forwarded from node memory to node memory in the network, can beused as a backend system(s) in many applications that currently usedfixed medium storage. In one example, this data forwarding storage andmanagement system where the data is continually being routed/forwardedfrom node memory to node memory in the network is used as anadvertisement forwarding and retrieval system. Advertisement is deployedinto the data forwarding storage and management system from a masterserver or control station and recalled on demand or in response to astimulus or activity. Here, we consider advertisement as a broad termthat can include any content, including, but limited to, text, audio,visual or any combination thereof. Advertisement can be deployed intothe data forwarding storage network and recalled/retrieved when needed,e.g., directed to an IP address of a specific user system, directed topaid and/or unpaid subscribers of applications within the dataforwarding storage network, and/or directed to users outside of the dataforwarding storage network. Advertisement being continuously forwardedin the data forwarding storage network can be sent to all users orspecifically targeted according to one or more user characteristics,user profiles, usage patterns, history and/or past or present viewedpage content. The advertisement being continuously forwarded in the dataforwarding storage network can be displayed to a current user within anapplication or web browser or delivered to a wired or wireless radio,television and/or television network. Advertisements can be retrieved inresponse to a stimulus or activity, such as the user's profile, trafficpatterns of one or more users, application profiles, and so forth.Advertisements can be stored and delivered in any media form and eitherpre-configured by specific file type and size for a specific end user orsite delivery requirements/formats, or delivered and formatted by virtueof the end user or middleware software compatibility systems.

In one example, selected advertisement can be delivered to a userthrough a web browser. More particularly, a plug-in and/or helperapplication can be associated with a user's web browser. In general, aplug-in is a computer program that interacts with a host application (aweb browser or an email client, for example) to provide a certain,usually very specific, function “on demand.” As a user navigates to aparticular web page, the plug-in can parse displayed text. The plug-incan then request specific advertisement being continuously forwarded inthe data forwarding storage network that matches the parsed text to theweb browser of the user for display in a section of the display screenor as a pop-up.

In another example, a user requesting retrieval of a data file beingcontinuously forwarded in the data forwarding storage network may bepresented with specific advertisement being continuously forwarded inthe data forwarding storage network that matches the user's profile. Theuser's profile may include various personal and/or demographic data thataids in directing appropriate advertisement to the user. Theadvertisement may then be displayed as a banner or in a shared window orin a separate window.

In each of the examples above, the network includes a group ofinterconnected computer system nodes each adapted to receive data andadvertisement and continuously forward the data and advertisement fromcomputer memory to computer memory, independent of each other, withoutstoring on any physical storage device, in response to a request tostore the data from a requesting system and retrieve data beingcontinuously forwarded from computer memory to computer memory inresponse to a request to retrieve the data from the requesting system.Each node in the network is adapted to detect the presence of a data andadvertisement in its memory and forward the data and advertisement to acomputer memory of another node in the interconnected computer systemsnodes according to a node's availability. The node's availability can bedetermined according to its volume of network traffic. Each node canencrypt the data.

A central node can be adapted to match the data retrieval request at acentral server using a hash mark representing the data or advertisemententering a node, send a message to a node that is predicted to have thedata or advertisement in memory, the message instructing the node toforward the data and/or advertisement in memory to the requester, andsend a confirmation message to the central server that the data oradvertisement in memory has been forwarded to the requester.

As shown in FIG. 6, a process 300 includes directing (302) advertisementto a computer memory. The advertisement can include any content,including, but limited to, text, audio, visual or any combinationthereof The advertisement can include multiple configurations in orderto satisfy different systems delivery specifications. Advertisements canbe stored and delivered in any media form and either pre-configured byspecific file type and size for a specific end user or site deliveryrequirements/formats, or delivered and formatted by virtue of the enduser or middleware software compatibility systems.

Process 300 directs (304) data to a computer memory.

Process 300 continuously forwards (306) each of the unique data,independent of each other, from one computer memory to another computermemory in the network of interconnected computer system nodes withoutstoring on any physical storage device in the network.

Process 300 continuously forwards (308) each of the uniqueadvertisements, independent of each other, from one computer memory toanother computer memory in the network of interconnected computer systemnodes without storing on any physical storage device in the network.

Process 300 retrieves (310) one of the advertisements in response to anactivity.

The invention can be implemented to realize one or more of the followingadvantages. A network creates data storage without caching or downloads.Data storage and management are accomplished via a constant routing ofthe data.

Embodiments of the invention can be implemented in digital electroniccircuitry, or in computer hardware, firmware, software, or incombinations of them. Embodiments of the invention can be implemented asa computer program product, i.e., a computer program tangibly embodiedin an information carrier, e.g., in a machine readable storage device orin a propagated signal, for execution by, or to control the operationof, data processing apparatus, e.g., a programmable processor, acomputer, or multiple computers. A computer program can be written inany form of programming language, including compiled or interpretedlanguages, and it can be deployed in any form, including as a standalone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program can bedeployed to be executed on one computer or on multiple computers at onesite or distributed across multiple sites and interconnected by acommunication network.

Method steps of embodiments of the invention can be performed by one ormore programmable processors executing a computer program to performfunctions of the invention by operating on input data and generatingoutput. Method steps can also be performed by, and apparatus of theinvention can be implemented as, special purpose logic circuitry, e.g.,an FPGA (field programmable gate array) or an ASIC (application specificintegrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for executing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto optical disks, or optical disks. Information carrierssuitable for embodying computer program instructions and data includeall forms of non volatile memory, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto optical disks; and CD ROM and DVD-ROM disks. The processor andthe memory can be supplemented by, or incorporated in special purposelogic circuitry.

It is to be understood that the foregoing description is intended toillustrate and not to limit the scope of the invention, which is definedby the scope of the appended claims. Other embodiments are within thescope of the following claims.

1. A method comprising: receiving, from a user computer, an indicationof text displayed on a display of the user computer; determining, by acomputing system, advertising content for transmission to the usercomputer based on at least the indication of text displayed on thedisplay of the user computer; transmitting, from the computing system, arequest for the determined advertising content to one or more computersystem nodes of a network of computer system nodes, wherein the computersystem nodes are configured to: dynamically determine, foradvertisements received at respective computer system nodes, one or moreforwarding nodes of the computer system nodes based on one or morestatuses of the respective forwarding nodes and/or one or more statusesof the network; continuously forward the advertisements from respectivecomputer system nodes to respective determined forwarding nodes withoutstoring the advertisements on any fixed storage medium in the network;and providing the determined advertising content to the user computer.2. The method of claim 1, wherein providing the determined advertisingcontent to the user computer comprises instructing one or more computersystem nodes of the network to forward the determined advertisingcontent to the user computer.
 3. The method of claim 1, whereinproviding the determined advertising content to the user computercomprises providing the user computer with a network location of thedetermined advertising content.
 4. The method of claim 1 whereincontinuously forwarding comprises: detecting a particular advertisementat a specific node; and forwarding the particular advertisement toanother node in the network of computer system nodes without storing theparticular advertisement on any fixed storage medium.
 5. The method ofclaim 1 wherein the one or more statuses of the respective forwardingnodes and/or the one or more statuses of the network comprise networktraffic analysis and/or available memory.
 6. The method of claim 1further comprising: continuously forwarding each of a plurality of dataitems, independent of one other, among the computer system nodes in thenetwork without storing the data items on any fixed storage medium inthe network; receiving a request from a requesting computing system toretrieve a particular data item being continuously forwarded in thenetwork of computer system nodes; and retrieving the particular dataitem from a node in response to the request to retrieve the particulardata item.
 7. The method of claim 6 wherein retrieving comprises:identifying an entry of a data structure associated with the particulardata item based on a hash mark associated with the particular data item;determining, based on the identified entry of the data structure, a nodethat is predicted to have the particular data item; and transmitting amessage instructing the determined node to forward the particular dataitem to the requesting computing system.
 8. The method of claim 7further comprising receiving an acknowledgment from the requestingcomputing system that the particular data item has been received.
 9. Acomputing system comprising: one or more hardware processor configuredto execute software instructions; a computer readable medium storinginstructions for execution by the one or more processor in order tocause the computing system to perform operations comprising: receivingan indication of text displayed on a display of a user computer;determining advertising content for transmission to the user computerbased on at least the indication of text displayed on the display of theuser computer; transmitting a request for the determined advertisingcontent to one or more computer system nodes of a network of computersystem nodes, wherein the computer system nodes are configured tocontinuously forward each of a plurality of advertisements, independentof one other, among the computer system nodes in the network withoutstoring the advertisements on any fixed storage medium of the computersystem nodes, wherein computer systems nodes to which respectiveadvertisements are forwarded are determined dynamically at computersystem nodes receiving the respective advertisements based on statusesof respective computer system nodes and/or one or more statuses of thenetwork; and providing the determined advertising content to the usercomputer.
 10. The computing system of claim 9, wherein providing thedetermined advertising content to the user computer comprisesinstructing one or more computer system nodes of the network to forwardthe determined advertising content to the user computer.
 11. Thecomputing system medium of claim 9, wherein providing the determinedadvertising content to the user computer comprises providing the usercomputer with a network location of the determined advertising content.12. The computing system of claim 9, wherein continuously forwardingcomprises: detecting a particular advertisement at a specific node; andforwarding the particular advertisement to another node in the networkof computer system nodes without storing the particular advertisement onany fixed storage medium.
 13. The computing system of claim 12, furthercomprising: determining an address of a node available to receive theparticular advertisement based on one or more factors.
 14. A non-signalcomputer readable storage medium storing instructions for causing acomputing system to perform operations comprising: receiving anindication of content displayed on a display of a user computer;determining advertising content for transmission to the user computerbased on at least the indication of content displayed on the display ofthe user computer; transmitting a request for the determined advertisingcontent to one or more computer system nodes of a network of computersystem nodes, wherein the computer system nodes are configured tocontinuously forward each of a plurality of advertisements, independentof one other, among the computer system nodes in the network withoutstoring the advertisements on any fixed storage medium of the computersystem nodes, wherein computer systems nodes to which respectiveadvertisements are forwarded are determined dynamically at computersystem nodes receiving the respective advertisements based on statusesof respective computer system nodes and/or one or more statuses of thenetwork; and providing the determined advertising content to the usercomputer.
 15. The non-signal computer readable storage medium of claim14, wherein providing the determined advertising content to the usercomputer comprises instructing one or more computer system nodes of thenetwork to forward the determined advertising content to the usercomputer.
 16. The non-signal computer readable storage medium of claim14, wherein providing the determined advertising content to the usercomputer comprises providing the user computer with a network locationof the determined advertising content.
 17. The non-signal computerreadable storage medium of claim 14, wherein continuously forwardingcomprises: detecting a particular advertisement at a specific node; andforwarding the particular advertisement to another node in the networkof computer system nodes without storing the particular advertisement onany fixed storage medium.
 18. The non-signal computer readable storagemedium of claim 17, further comprising: determining an address of a nodeavailable to receive the particular advertisement based on one or morefactors.
 19. The non-signal computer readable storage medium of claim 18wherein the one or more factors comprise network traffic analysis and/oravailable memory.